home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / tos_updt / fmcity / palcom / auto / script / sendftsr.mx < prev   
Text File  |  1995-04-17  |  20KB  |  709 lines

  1. //--------------------------------------------------------------------------//
  2. //                        PALCOM V2.1 L10                        //
  3. //                NIFTY-Serve 汎用ファイル送信スクリプト(常駐外部)            //
  4. //                                                                            //
  5. //                                        CopyRight(C) 1994/10/20                //
  6. //                                FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED    //
  7. //                                        written by C-cube Soft T.Nakamura    //
  8. //--------------------------------------------------------------------------//
  9. !!MAINBLOCK
  10. event    @OPEN.EXTERN {
  11.     //---   送信情報チェックテーブルの設定                      ---//
  12.     //---   -1 : 不必要 / 0 : あってもなくてもいい / 1 : 必須   ---//
  13.     $id = #FALSE;
  14.     sys.global( $id             );
  15.     sys.global( $SendDataChkTbl );
  16.     $SendDataChkTbl = [
  17.     //   SUB  TO  RE FROM SDATE KEY MESS DATA
  18.         [  1,  1, -1,   0,   0,  -1,  -1,  1 ],    // 0 : メール
  19.         [  1, -1, -1,  -1,  -1,   0,  -1,  1 ],    // 1 : 掲示板(BBS)文書
  20.         [  1, -1, -1,  -1,  -1,  -1,  -1,  1 ],    // 2 : HP文書
  21.         [  1, -1,  0,  -1,  -1,  -1,  -1,  1 ],    // 3 : 会議室文書
  22.         [  1, -1, -1,   0,  -1,  -1,  -1,  1 ],    // 4 : シスオペ宛メール
  23.         [  1, -1, -1,  -1,  -1,   1,   0,  1 ],    // 5 : データライブラリ
  24.     ];
  25.     return;
  26. }
  27. event    @CLOSE.EXTERN {
  28.     sys.local( $SendDataChkTbl );
  29.     sys.local( $id             );
  30.     return;
  31. }
  32. event    @ERROR {
  33.     if( $id != #FALSE ) {
  34.         file.close( $id );
  35.         $id = #FALSE;
  36.     }
  37.     AUTO.fatalError();
  38.     event.mainLoop();
  39. }
  40.  
  41.  
  42.  
  43. //------------------------------//
  44. //---   ファイルを送信する   ---//
  45. //------------------------------//
  46. function    AUTO.sendFileTSR(
  47.     $idxList,                // インデックス情報リスト
  48.     $mode )                    // モード    0 : メール
  49.                             //            1 : 掲示板(BBS)文書
  50.                             //            2 : HP文書
  51.                             //            3 : メッセージ(フォーラム会議室)文書
  52.                             //            4 : シスオペ宛メール
  53.                             //            5 : データライブラリ
  54. {
  55.     $intRecFlg = sys.intRec?();
  56.     sys.stopIntRec();
  57.     $AUTO.WAIT15 = AUTO.getWaitChar( 15 );
  58.     $AUTO.WAIT60 = AUTO.getWaitChar( 60 );
  59.     $id  = #FALSE;
  60.     $des = #TRUE;
  61.  
  62.     //---   データの初期設定   ---//
  63.     table( $mode ) {
  64.         0 { $errTitle = "メール送信";            }
  65.         1 { $errTitle = "掲示板(BBS)文書送信";    }
  66.         2 { $errTitle = "HP文書送信";            }
  67.         3 { $errTitle = "会議室文書送信";        }
  68.         4 { $errTitle = "シスオペ宛メール送信";    }
  69.         5 { $errTitle = "データライブラリ送信";    }
  70.     }
  71.     $dataList = ["", [], -1, "", "", [], #FALSE, #FALSE];
  72.  
  73.     //---   拡張情報を取得する   ---//
  74.     Auto.getDataToEtx( $dataList, $idxList );
  75.  
  76.     //---   送信データが設定されていません   ---//
  77.     $data = list.getNth( $dataList, 8 );
  78.     if( $data == #FALSE ) {
  79.         $errMsg =["送信文書(データ)が設定されていません。",
  80.                   "送信を中断しました。"];
  81.         goto ERROR_P;
  82.     }
  83.  
  84.     //---   送信データのタイプチェック   ---//
  85.     if( list.getNth( $idxList, 3 ) == 0x203 ) {    // ファイル指定データ
  86.         $type = 0;
  87.         $ctrl = list.getNth( $data, 1 );
  88.     } else {                                    // ログ内データ
  89.         $type = 1;
  90.         $ctrl = list.getNth( $data, 5 );
  91.     }
  92.     if( $ctrl & 0x8000 ) {
  93.         //---   バイナリ送信出来ない物の場合のチェック   ---//
  94.         if(( $mode == 1 )||( $mode == 2 )||( $mode == 3 )||( $mode == 4 )) {
  95.             $errMsg = ["バイナリデータは送信できません。",
  96.                         "送信を中断しました。"];
  97.             goto ERROR_P;
  98.         }
  99.     }
  100.  
  101.     //---   各種情報のチェック   ---//
  102.     $chkList = list.getNth( $SendDataChkTbl, $mode + 1 );
  103.     $i = 1;
  104.     loop {
  105.         if( $i == 9 ) {
  106.             exit;
  107.         }
  108.         if( list.getNth( $chkList, $i ) != 1 ) {
  109.             $i = $i + 1;
  110.             continue;
  111.         }
  112.         $data = list.getNth( $dataList, $i );
  113.         table( $i ) {
  114.             1    {                                // 題名のチェック
  115.                 if( $data == "" ) {
  116.                     $errMsg =  ["題名の設定されていない文書が存在します。",
  117.                                 "送信を中断しました。"];
  118.                     goto ERROR_P;
  119.                 }
  120.             }
  121.             2    {                                // 宛先のチェック
  122.                 if( list.size( $data ) == 0 ) {
  123.                     $errMsg =  ["宛先の設定されていない文書が存在します。",
  124.                                 "送信を中断しました。"];
  125.                     goto ERROR_P;
  126.                 }
  127.             }
  128.             3    {                                // 応答番号のチェック
  129.                 if( $data == #FALSE ) {
  130.                     $errMsg =  ["応答番号の設定されていない文書が存在します。",
  131.                                 "送信を中断しました。"];
  132.                     goto ERROR_P;
  133.                 }
  134.             }
  135.             4    {                                // 差出人のチェック
  136.                 if( $data == "" ) {
  137.                     $errMsg =  ["差出人の設定されていない文書が存在します。",
  138.                                 "送信を中断しました。"];
  139.                     goto ERROR_P;
  140.                 }
  141.             }
  142.             5    {                                // 期日指定のチェック
  143.                 if( $data == "" ) {
  144.                     $errMsg =  ["期日指定の設定されていない文書が存在します。",
  145.                                 "送信を中断しました。"];
  146.                     goto ERROR_P;
  147.                 }
  148.             }
  149.             6    {                                // 検索キーのチェック
  150.                 if( $data == "" ) {
  151.                     $errMsg =  ["検索キーの設定されていない文書が存在します。",
  152.                                 "送信を中断しました。"];
  153.                     goto ERROR_P;
  154.                 }
  155.             }
  156.             7    {                                // メッセージのチェック
  157.                 if( $data == #FALSE ) {
  158.                     $errMsg =["メッセージの設定されていない文書が存在します。",
  159.                               "送信を中断しました。"];
  160.                     goto ERROR_P;
  161.                 }
  162.             }
  163.             8    {                                // データのチェック
  164.                 if( $data == #FALSE ) {
  165.                     $errMsg =["送信文書(データ)が設定されていません。",
  166.                               "送信を中断しました。"];
  167.                     goto ERROR_P;
  168.                 }
  169.             }
  170.         }
  171.         $i = $i + 1;
  172.     }
  173.  
  174.     //---   いざ送信   ---//
  175.     $sub   = list.getNth( $dataList, 1 );
  176.     $to    = list.getNth( $dataList, 2 );
  177.     $re    = list.getNth( $dataList, 3 );
  178.     $from  = list.getNth( $dataList, 4 );
  179.     $sdate = list.getNth( $dataList, 5 );
  180.     $key   = list.getNth( $dataList, 6 );
  181.     $mess  = list.getNth( $dataList, 7 );
  182.     $data  = list.getNth( $dataList, 8 );
  183.  
  184.     //---   ファイル送信の場合は、ファイルの存在のチェックを行う   ---//
  185.     if( $type == 0 ) {
  186.         if( file.exist( list.getNth( $data, 3 )) == #FALSE ) {
  187.             //---   送信すべきファイルが無い?   ---//
  188.             $errMsg = ["送信ファイルが存在しません。",
  189.                     str.join(["ファイル名:", list.getNth( $data, 3 )], "" )];
  190.             goto ERROR_P;
  191.         }
  192.     }
  193.  
  194.     //---   送信コマンドの送信   ---//
  195.     if( $mode == 2 ) {                            // HP
  196.         $cmd = "WRITE\r";
  197.     } elif( $mode == 0 ) {                        // メール
  198.         if( $ctrl & 0x8000 ) {
  199.             $cmd = "UPLOAD PROT:BPL TYPE:BIN\r";
  200.         } else {
  201.             $cmd = "COMPOSE\r";
  202.         }
  203.     } elif( $mode == 4 ) {                        // SYM
  204.         AUTO.sendCommand("SYM");
  205.         $cmd = "1\r";
  206.     } else {                                    // メッセージ / BBS
  207.         $cmd = "COMPOSE\r";
  208.     }
  209.     AUTO.putStr2( $cmd );
  210.  
  211.     //---   文書埋め込みコマンドの送信(テキストの場合のみ)   ---//
  212.     $maxLine = 100;
  213.     if( !( $ctrl & 0x8000 )) {
  214.         $errFlg = #FALSE;
  215.         if( $mode == 0 ) {                        // メール(TEXT)
  216.             comtable( $a, 0 ) {
  217.             "%3d 行まで"                { $maxLine = data.toNumber( $a ); }
  218.             "終了は行頭で/E)\n\w\w"    { exit; }
  219.             $AUTO.WAIT15                { AUTO.putStr("\r"); }
  220.             interval                    { AUTO.haltCheck();  }
  221.             ">\w\w"                        { $errFlg = #TRUE; exit; }
  222.             }
  223.             if( $errFlg == #TRUE ) {
  224.                 $errMsg =  ["ファイルの送信に失敗しました。",
  225.                             "送信を中断しました。"];
  226.                 goto ERROR_P;
  227.             }
  228.             AUTO.waitPrompt( #FALSE );
  229.             AUTO.putStr2(str.join(["SUBJ:", $sub, "\r"], "" ));
  230.             AUTO.waitPrompt( #FALSE );
  231.             if( $sdate != "" ) {
  232.                 AUTO.putStr2( str.join(["SDATE:", $sdate, "\r"], "" ));
  233.                 AUTO.waitPrompt( #FALSE );
  234.             }
  235.             if( $from  != "" ) {
  236.                 AUTO.putStr2( str.join(["FROM:", $from, "\r"], "" ));
  237.                 AUTO.waitPrompt( #FALSE );
  238.             }
  239.         } elif(( $mode == 1 )||( $mode == 4 )) {// BBS 及び SYM(TEXT)
  240.             comtable( $a, 0 ) {
  241.             "%3d 行まで"                { $maxLine = data.toNumber( $a ); }
  242.             "終了は行頭で/E) \n\w\w"    { exit; }
  243.             "終了は行頭で/E)\n\w\w"    { exit; }
  244.             $AUTO.WAIT15                { AUTO.putStr("\r"); }
  245.             interval                    { AUTO.haltCheck();  }
  246.             ">\w\w"                        { $errFlg = #TRUE; exit; }
  247.             }
  248.             if( $errFlg == #TRUE ) {
  249.                 $errMsg =  ["ファイルの送信に失敗しました。",
  250.                             "送信を中断しました。"];
  251.                 goto ERROR_P;
  252.             }
  253.             AUTO.waitPrompt( #FALSE );
  254.             AUTO.putStr2( str.join(["SUBJ:", $sub, "\r"], "" ));
  255.             AUTO.waitPrompt( #FALSE );
  256.         } elif( $mode == 2 ) {                    // HP
  257.             comtable( $a, 300 ) {
  258.                 interval { AUTO.haltCheck(); }
  259.                 ":\w\w" {
  260.                     AUTO.putStr2( str.join([$sub, "\r"], "" ));
  261.                     AUTO.waitPrompt( #TRUE );
  262.                     AUTO.putStr2("1\r");
  263.                     exit;
  264.                 }
  265.                 timeout {
  266.                     //---   送信失敗   ---//
  267.                     $errMsg =  ["ファイルの送信に失敗しました。",
  268.                                 "送信を中断しました。"];
  269.                     goto ERROR_P;
  270.                 }
  271.             }
  272.             comtable( $a, 0 ) {
  273.             "%3d 行まで"                { $maxLine = data.toNumber( $a ); }
  274.             "終了は行頭で/E)\n\w\w"        { exit; }
  275.             $AUTO.WAIT15                { AUTO.putStr("\r"); }
  276.             interval                    { AUTO.haltCheck();  }
  277.             ">\w\w"                        { $errFlg = #TRUE; exit; }
  278.             }
  279.             if( $errFlg == #TRUE ) {
  280.                 $errMsg =  ["ファイルの送信に失敗しました。",
  281.                             "送信を中断しました。"];
  282.                 goto ERROR_P;
  283.             }
  284.         } elif( $mode == 3 ) {                    // 会議室文書
  285.             comtable( $a, 0 ) {
  286.             "%3d 行まで"                { $maxLine = data.toNumber( $a ); }
  287.             "終了は行頭で/E)\n\w\w"    { exit; }
  288.             $AUTO.WAIT15                { AUTO.putStr("\r"); }
  289.             interval                    { AUTO.haltCheck();  }
  290.             ">\w\w"                        { $errFlg = #TRUE; exit; }
  291.             }
  292.             if( $errFlg == #TRUE ) {
  293.                 $errMsg =  ["ファイルの送信に失敗しました。",
  294.                             "送信を中断しました。"];
  295.                 goto ERROR_P;
  296.             }
  297.             AUTO.waitPrompt( #FALSE );
  298.             AUTO.putStr2( str.join(["SUB:", $sub, "\r"], "", ));
  299.             AUTO.waitPrompt( #FALSE );
  300.             if( $re == #FALSE ) {
  301.                 AUTO.putStr2("RE:NONE\r");
  302.                 AUTO.waitPrompt( #FALSE );
  303.             } elif( $re > 0 ) {
  304.                 AUTO.putStr2( str.join(["RE:",data.toString( $re ),"\r"],"" ));
  305.                 AUTO.waitPrompt( #FALSE );
  306.             }
  307.         }
  308.     }
  309.  
  310.     //---   本文の送信   ---//
  311.     $lastCmd = "1\r";
  312.     $sendNo  = "1";
  313. //$lastCmd = "2\r";
  314. //$sendNo  = "2";
  315.     if( $ctrl & 0x8000 ) {                        // バイナリの場合
  316.         comtable( $a, 1200 ) {
  317.             interval        { AUTO.haltCheck();  }
  318.             $AUTO.WAIT60    { AUTO.putStr("\r"); }
  319.             ":\w\w"        {                    // ファイル名の送信
  320.                 if( $type == 0 ) {
  321.                     //---   ファイル名指定   ---//
  322.                     $fName = list.getNth( $data, 3 );
  323.                 } else {
  324.                     //---   ログ内データ指定   ---//
  325.                     $fName = AUTO.getLogFileName();
  326.                 }
  327.                 AUTO.putStr2( str.join([$fName, "\r"], "" ));
  328.             }
  329.             "-アップロード開始-\n"    {
  330.                 exit;
  331.             }
  332.         }
  333.         $IdxId = AUTO.getIdxFileId();
  334.         $idxHeader = lsi.getInfo( $IdxId );
  335.         list.del1st( $idxHeader );
  336.         list.put1st( $idxHeader, AUTO.getIdxNum());
  337.         lsi.setInfo( $IdxId, $idxHeader );
  338.         event.mask( @ERROR );
  339.         if( $type == 0 ) {
  340.             $ret = xfer.sendBinary( list.getNth( $data, 3 ), -1, -1, [] );
  341.         } else {
  342.             $ret = xfer.sendBinary( AUTO.getLogFileName(),
  343.                                     list.getNth( $data, 6 ),
  344.                                     list.getNth( $data, 7 ), [] );
  345.         }
  346.         event.unmask( @ERROR );
  347.         if( $ret != #TRUE ) {
  348.             $errMsg =  ["ファイルの送信に失敗しました。",
  349.                         "送信を中断しました。"];
  350.             goto ERROR_P;
  351.         }
  352.     } else {                                    // テキストの場合
  353.         if( $type == 0 ) {
  354.             //---   ファイル送信の場合   ---//
  355.             $id = file.open( list.getNth( $data, 3 ), "", 1 );
  356.             $line = 0;
  357.             loop {
  358.                 $str = file.getString( $id );
  359.                 if( $str == #FALSE ) {
  360.                     exit;
  361.                 }
  362.                 if( code( $str ) == 0x1A ) {
  363.                     exit;
  364.                 }
  365.                 if(( str.length( $str ) >= 256 ) &&
  366.                     (code( str.right( $str, 1 )) != 0x0A )) {
  367.                     $lastCmd = "2\r";
  368.                     $sendNo  = "2";
  369.                     $errMsg =  [
  370.                 "1行が長すぎるか、テキストファイルではない可能性があります。",
  371.                 "送信を中断しました。",
  372.                 str.join(["送信文書タイトル:", $sub], "" )];
  373.                     AUTO.error( $errTitle, $errMsg );
  374.                     $des = #FALSE;
  375.                     exit;
  376.                 }
  377.                 $str = str.replaceAll( $str, "\n", "" );
  378.                 if( str.length( $str ) > 80 ) {
  379.                     $line = $line + ( str.length( $str ) / 80 );
  380.                 }
  381.                 if( $line == $maxLine ) {
  382.                     //---   送信可能行数をオーバーした場合は   ---//
  383.                     //---   エラーメッセージを残して送信中断   ---//
  384.                     $lastCmd = "2\r";
  385.                     $sendNo  = "2";
  386.                     $errMsg =  [str.join(["送信可能行数(",
  387.                                           data.toString( $maxLine ), "行)",
  388.                                           "を超えました。"], "" ),
  389.                                 "送信を中断しました。",
  390.                                 str.join(["送信文書タイトル:", $sub], "" )];
  391.                     AUTO.error( $errTitle, $errMsg );
  392.                     $des = #FALSE;
  393.                     exit;
  394.                 }
  395.                 AUTO.putStr2( str.join([$str, "\r"], "" ));
  396.                 AUTO.waitPrompt( #FALSE );
  397.                 $line = $line + 1;
  398.             }
  399.             file.close( $id );
  400.         } else {
  401.             $id     = file.open( AUTO.getLogFileName(), "", 1 );
  402.             $topPtr = list.getNth( $data, 6 );
  403.             $size   = list.getNth( $data, 7 );
  404.             file.seek( $id, $topPtr, 0 );
  405.             $endFlg = #FALSE;
  406.  
  407.             //---   1行ずつ読み込んで、送信する   ---//
  408.             $line = 0;
  409.             loop {
  410.                 $str = file.getString( $id );
  411.                 if( $str == #FALSE ) {
  412.                     exit;
  413.                 }
  414.                 if( code( $str ) == 0x1A ) {
  415.                     exit;
  416.                 }
  417.                 $ptrWk = file.tell( $id );
  418.                 if( $ptrWk >= $topPtr + $size ) {
  419.                     $str = str.left( $str, str.length( $str ) -
  420.                                             ( $ptrWk - ( $topPtr + $size )));
  421.                     $endFlg = #TRUE;
  422.                 }
  423.                 if(( str.length( $str ) >= 256 ) &&
  424.                     ( code( str.right( $str, 1 )) != 0x0A )) {
  425.                     $lastCmd = "2\r";
  426.                     $sendNo  = "2";
  427.                     $errMsg =  [
  428.                 "1行が長すぎるか、テキストファイルではない可能性があります。",
  429.                 "送信を中断しました。",
  430.                 str.join(["送信文書タイトル:", $sub], "" )];
  431.                     AUTO.error( $errTitle, $errMsg );
  432.                     $des = #FALSE;
  433.                     exit;
  434.                 }
  435.                 $str = str.replaceAll( $str, "\n", "" );
  436.                 if( str.length( $str ) > 80 ) {
  437.                     $line = $line + ( str.length( $str ) / 80 );
  438.                 }
  439.                 if( $line == $maxLine ) {
  440.                     //---   送信可能行数をオーバーした場合は   ---//
  441.                     //---   エラーメッセージを残して送信中断   ---//
  442.                     $lastCmd = "2\r";
  443.                     $sendNo  = "2";
  444.                     $errMsg =  [str.join(["送信可能行数(",
  445.                                           data.toString( $maxLine ), "行)",
  446.                                           "を超えました。"], "" ),
  447.                                 "送信を中断しました。",
  448.                                 str.join(["送信文書タイトル:", $sub], "" )];
  449.                     AUTO.error( $errTitle, $errMsg );
  450.                     $des = #FALSE;
  451.                     exit;
  452.                 }
  453.                 AUTO.putStr2( str.join([$str, "\r"], "" ));
  454.                 AUTO.waitPrompt( #FALSE );
  455.                 if( $endFlg == #TRUE ) {
  456.                     exit;
  457.                 }
  458.                 $line = $line + 1;
  459.             }
  460.             file.close( $id );
  461.             $id = #FALSE;
  462.         }
  463.         AUTO.putStr("/E\r");
  464.     }
  465.  
  466.     //---   各種指定の処理   ---//
  467.     $mode  = 0;
  468.     $toNum = list.size( $to );
  469.     if( $toNum > 10 ) {
  470.         $toNum = 10;;
  471.     }
  472.     $toCnt   = 0;
  473.     comtable( $a, 0 ) {
  474.         interval        { AUTO.haltCheck();  }
  475.         ">\w\w"            { exit; }
  476.         ">\w\w"        { exit; }
  477.         $AUTO.WAIT60    {
  478.             AUTO.putStr("\r");
  479.             if( $mode == 0 ) {
  480.                 AUTO.putStr("/E\r");
  481.             }
  482.         }
  483.         "\n◆" {
  484.             $mode = 1;
  485.             if( $toFlg == 1 ) {
  486.                 $errMsg =  [str.join(["宛先に誤りがあります(",
  487.                                     list.getNth( $to, $toCnt ), ")。"], "" ),
  488.                             "送信を中止しました。"];
  489.                 AUTO.error( $errTitle, $errMsg );
  490.                 $des = #FALSE;
  491.                 $lastCmd = "2\r";
  492.                 goto TO_SEND;
  493.             }
  494.         }
  495.         "\n題名" {
  496.             $mode = 1;
  497.             AUTO.waitPrompt( #TRUE );
  498.             AUTO.putStr( $sub );
  499.             AUTO.putStr("\r");
  500.         }
  501.         "\n確認" {
  502.             $mode = 1;
  503.             AUTO.waitPrompt( #TRUE );
  504.             AUTO.putStr("1\r");
  505.         }
  506.         "\n送信 (" {
  507.             //---   期日指定が無い場合、半角の '(' らしい   ---//
  508.             $mode = 1;
  509.             AUTO.waitPrompt( #TRUE );
  510.             AUTO.putStr( $sendNo );
  511.             AUTO.putStr("\r");
  512.         }
  513.         "\n送信(" {
  514.             //---   期日指定がある場合、全角の'(' らしい   ---//
  515.             $mode = 1;
  516.             comtable( $b, 300 ) {
  517.                 "%d:期日指定" {
  518.                     if( $sdate != "" ) {
  519.                         $sendNo = data.toString( data.toNumber( $b ));
  520.                     }
  521.                 }
  522.                 ":\w\w" { exit; }
  523.                 interval { AUTO.haltCheck(); }
  524.             }
  525.             AUTO.putStr( $sendNo );
  526.             AUTO.putStr("\r");
  527.         }
  528.         "\n登録 (" {
  529.             $mode = 1;
  530.             AUTO.waitPrompt( #TRUE );
  531.             AUTO.putStr( $lastCmd );
  532.         }
  533.         "\n送信期日 (" {
  534.             $mode = 1;
  535.             if( $sdate == "" ) {
  536.                 $errMsg =  ["送信期日の指定が出来ません。"
  537.                                                 "送信期日を確認してください。",
  538.                             str.join(["ファイル名:", $path, "\n"], "" ),
  539.                             "送信を中断しました。"];
  540.                 AUTO.error( $errTitle, $errMsg );
  541.                 $des = #FALSE;
  542.                 $lastCmd = "2\r";
  543.             }
  544.             AUTO.waitPrompt( #TRUE );
  545.             AUTO.putStr( $sdate );
  546.             AUTO.putStr("\r");
  547.             $sdate = "";
  548.         }
  549.         "\n修正 (" {
  550.             $mode = 1;
  551.             AUTO.waitPrompt( #TRUE );
  552.             AUTO.putStr("2\r");
  553.         }
  554.         "\n宛先 (" {
  555.             $mode = 1;
  556. TO_SEND:    AUTO.waitPrompt( #TRUE );
  557.             if( $toNum == $toCnt ) {
  558.                 $toFlg = 0;
  559.                 AUTO.putStr("\r");
  560.             } else {
  561.                 $toFlg = 1;
  562.                 AUTO.putStr( list.getNth( $to, $toCnt + 1 ));
  563.                 AUTO.putStr("\r");
  564.                 $toCnt = $toCnt + 1;
  565.             }
  566.         }
  567.         "\n検索キーの選択" {
  568.             $mode = 1;
  569.             AUTO.waitPrompt( #TRUE );
  570.             if( list.size( $key ) != 0 ) {
  571.                 AUTO.sendCommand("0");
  572.                 AUTO.putStr( list.get1st( $key ));
  573.                 AUTO.putStr("\r");
  574.             } else {
  575.                 //---   検索キー指定が無い場合、無条件に 1 を選択   ---//
  576.                 AUTO.putStr("1\r");
  577.             }
  578.         }
  579.     }
  580.  
  581.     //---   後始末   ---//
  582.     if( $intRecFlg == #TRUE ) {
  583.         sys.startIntRec();
  584.     }
  585.     return( $des );
  586.  
  587. ERROR_P:
  588.     AUTO.error( $errTitle, $errMsg );
  589.     if( $id != #FALSE ) {
  590.         file.close( $id );
  591.         $id = #FALSE;
  592.     }
  593.     if( $intRecFlg == #TRUE ) {
  594.         sys.startIntRec();
  595.     }
  596.     return( #FALSE );
  597. }
  598.  
  599.  
  600.  
  601. //--------------------------//
  602. //---   拡張情報の取得   ---//
  603. //--------------------------//
  604. function    Auto.getDataToEtx(
  605.     $dataList,                                    // 拡張情報格納リスト
  606.     $idxList )                                    // インデックス情報リスト
  607. {
  608.     //---   各種情報の初期値設定   ---//
  609.     $sub   = list.getNth( $dataList, 1 );
  610.     $to    = list.getNth( $dataList, 2 );
  611.     $re    = list.getNth( $dataList, 3 );
  612.     $from  = list.getNth( $dataList, 4 );
  613.     $sdate = list.getNth( $dataList, 5 );
  614.     $key   = list.getNth( $dataList, 6 );
  615.     $mess  = list.getNth( $dataList, 7 );
  616.     $data  = list.getNth( $dataList, 8 );
  617.  
  618.     //---   目的のインデックスにシークし、タグを読み込む   ---//
  619.     $idxId = AUTO.getIdxFileId();
  620.     lsi.seekIndex( $idxId, list.getNth( $idxList, 2 ));
  621.     lsi.getIndex( $idxId );
  622.  
  623.     //---   タグを順番に読んでいって、拡張情報リストに設定していく   ---//
  624.     $tagNo = -3;
  625. //    $re    = -1;        95.04.17
  626.     $re    = #FALSE ;    
  627.     $i     =  0;
  628.     loop {
  629.         $retList = lsi.getTag( $idxId, $tagNo );
  630.         if( list.size( $retList ) == 0 ) {
  631.             exit;
  632.         }
  633.         $tagKind = list.getNth( $retList, 1 );
  634.         $tagList = list.getNth( $retList, 2 );
  635.         table( $tagKind ) {
  636.             0x105    {                            // 送信文書タイトル
  637.                 $sub = list.get1st( $tagList );
  638.             }
  639.             0x111    {                            // 送信先ID
  640.                 list.putLast( $to, list.get1st( $tagList ));
  641.             }
  642.             0x402    {                            // 送信応答番号
  643.                 if( list.get1st( $tagList ) == 1 ) {
  644.                     $re = list.get1st( list.getNth( $tagList, 2 ));
  645.                 }
  646.             }
  647. //            0x501    {        // 送信応答番号(~10A用はマーカの最後に入っている)
  648. //                if ( ( $re == -1) && (list.get1st( $tagList ) == 7) ) {
  649. //                                                            // 電子会議室?
  650. //                    $markList = list.getNth( $tagList, 2 );
  651. //                    if ( list.size( $markList ) >= 6 ) {    // 発言番号がある?
  652. //                        $re = list.getNth( $markList, 6 );    // 発言番号取得?
  653. //                    }
  654. //                }
  655. //            }
  656.             0x114    {                            // 差出人名
  657.                 $from = list.get1st( $tagList );
  658.             }
  659.             0x115    {                            // 送信指定期日
  660.                 $sdate = list.get1st( $tagList );
  661.             }
  662.             0x116    {                            // 検索キー
  663.                 list.putLast( $key, list.get1st( $tagList ));
  664.             }
  665.             0x301    {                            // メッセージ
  666.                 $mess = $tagList;
  667.             }
  668.             0x303    {                            // 送信データ(ログ内)
  669.                 if( list.getNth( $idxList, 3 ) == 0x303 ) {
  670.                     $i = $i + 1;
  671.                     if( list.getNth( $idxList, 4 ) == $i ) {
  672.                         $data = $tagList;
  673.                     }
  674.                 }
  675.             }
  676.             0x203    {                            // 送信データ(ファイル)
  677.                 if( list.getNth( $idxList, 3 ) == 0x203 ) {
  678.                     $i = $i + 1;
  679.                     if( list.getNth( $idxList, 4 ) == $i ) {
  680.                         $data = $tagList;
  681.                     }
  682.                 }
  683.             }
  684.         }
  685.         $tagNo = -2;
  686.     }
  687.  
  688.     //---   復帰データの加工   ---//
  689.     list.delNth( $dataList, 1 );
  690.     list.putNth( $dataList, 0, $sub   );
  691.     list.delNth( $dataList, 2 );
  692.     list.putNth( $dataList, 1, $to    );
  693.     list.delNth( $dataList, 3 );
  694.     list.putNth( $dataList, 2, $re    );
  695.     list.delNth( $dataList, 4 );
  696.     list.putNth( $dataList, 3, $from  );
  697.     list.delNth( $dataList, 5 );
  698.     list.putNth( $dataList, 4, $sdate );
  699.     list.delNth( $dataList, 6 );
  700.     list.putNth( $dataList, 5, $key   );
  701.     list.delNth( $dataList, 7 );
  702.     list.putNth( $dataList, 6, $mess  );
  703.     list.delNth( $dataList, 8 );
  704.     list.putNth( $dataList, 7, $data  );
  705.  
  706.     return( #TRUE );
  707. }
  708. !!ENDBLOCK
  709.